\hypertarget{classCEngineFactory}{
\section{\-C\-Engine\-Factory \-Class \-Reference}
\label{classCEngineFactory}\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}}
}


\-Factory that creates and destroys instances of \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle}.  




{\ttfamily \#include $<$engine\-\_\-factory.\-h$>$}

\subsection*{\-Static \-Public \-Member \-Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} $\ast$ \hyperlink{classCEngineFactory_a6a53a8d86c921932e9e2d4431ca894ef}{create\-Call\-Handle} (const std\-::string \&p\-Remote\-I\-D, \hyperlink{properties__reader_8h_a67847fd00cb49d80dd45f61722eb9a43}{\-C\-Properties\-Reader} $\ast$p\-Extern\-Properties\-Reader=\-N\-U\-L\-L, \hyperlink{structNAudioFormats_1_1SStreamInfo}{\-N\-Audio\-Formats\-::\-S\-Stream\-Info} p\-Io\-Stream\-Info=\hyperlink{structNAudioFormats_1_1SStreamInfo}{\-N\-Audio\-Formats\-::\-S\-Stream\-Info}(\-N\-Audio\-Formats\-::\-U\-N\-K\-N\-O\-W\-N\-\_\-\-W\-I\-D\-T\-H, 0, \-N\-Audio\-Formats\-::\-U\-N\-K\-N\-O\-W\-N\-\_\-\-C\-O\-D\-E\-C))
\begin{DoxyCompactList}\small\item\em create/reference a new call handle \end{DoxyCompactList}\item 
static void \hyperlink{classCEngineFactory_ae41edcd258c966b0426f09aa7e3cd914}{destroy\-Call\-Handle} (\hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} $\ast$$\ast$p\-Call\-Handle)
\begin{DoxyCompactList}\small\item\em destroy/un-\/reference this call handle \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{\-Static \-Public \-Attributes}
\begin{DoxyCompactItemize}
\item 
static const std\-::string \hyperlink{classCEngineFactory_a949f76900016fc93b0ace727506d3bb4}{s\-Ini\-Section\-Name} = \char`\"{}\-E\-N\-G\-I\-N\-E\-\_\-\-F\-A\-C\-T\-O\-R\-Y\char`\"{}
\end{DoxyCompactItemize}
\subsection*{\-Private \-Member \-Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classCEngineFactory_ae2a523fa1e8af99bae9d3f936e9e0883}{\-C\-Engine\-Factory} ()
\item 
\hyperlink{classCEngineFactory_a50890c0ffb574c8de1cf93ef45ca92ab}{\-C\-Engine\-Factory} (const \hyperlink{classCEngineFactory}{\-C\-Engine\-Factory} \&)
\item 
\hyperlink{classCEngineFactory}{\-C\-Engine\-Factory} \& \hyperlink{classCEngineFactory_aa0b2b51d15c2f1bda53b5e4bab2704da}{operator=} (const \hyperlink{classCEngineFactory}{\-C\-Engine\-Factory} \&)
\end{DoxyCompactItemize}
\subsection*{\-Static \-Private \-Member \-Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} $\ast$ \hyperlink{classCEngineFactory_aba7490eeeb5595bdfc0a3ce77c773577}{create\-Call\-Handle\-\_\-} (const std\-::string \&p\-Remote\-I\-D, \hyperlink{properties__reader_8h_a67847fd00cb49d80dd45f61722eb9a43}{\-C\-Properties\-Reader} $\ast$p\-Extern\-Properties\-Reader, \hyperlink{structNAudioFormats_1_1SStreamInfo}{\-N\-Audio\-Formats\-::\-S\-Stream\-Info} p\-Io\-Stream\-Info)
\begin{DoxyCompactList}\small\item\em create a new instance of the \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} \end{DoxyCompactList}\item 
static void \hyperlink{classCEngineFactory_aa061e96c927ed0742afea5f52747ead2}{destroy\-Call\-Handle\-\_\-} (\hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} $\ast$$\ast$p\-Call\-Handle)
\begin{DoxyCompactList}\small\item\em destroy this instance of the \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{\-Static \-Private \-Attributes}
\begin{DoxyCompactItemize}
\item 
static const std\-::string \hyperlink{classCEngineFactory_aee9727ca1f55ca90733787da7e3f98d6}{s\-Default\-Config\-Filename} = \char`\"{}/etc/stegit-\/2/stegit-\/2.conf\char`\"{}
\item 
static const std\-::string \hyperlink{classCEngineFactory_af2881f85b3805ef145778c2a0eec18f3}{s\-Send\-Original\-Filename} = \char`\"{}/tmp/send\-\_\-org.\-dat\char`\"{}
\item 
static const std\-::string \hyperlink{classCEngineFactory_a172ca0e73b2bf3431c091e18d2001b59}{s\-Send\-Modified\-Filename} = \char`\"{}/tmp/send\-\_\-mod.\-dat\char`\"{}
\item 
static const std\-::string \hyperlink{classCEngineFactory_ac12266ba155ccba2f71bf0dadb5ece71}{s\-Recv\-Modified\-Filename} = \char`\"{}/tmp/recv\-\_\-mod.\-dat\char`\"{}
\end{DoxyCompactItemize}


\subsection{\-Detailed \-Description}
\-Factory that creates and destroys instances of \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle}. 

\begin{DoxyAuthor}{\-Author}
gpitsch and rpoisel
\end{DoxyAuthor}
glue code will create and destroy a \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} by using \hyperlink{classCEngineFactory_a6a53a8d86c921932e9e2d4431ca894ef}{create\-Call\-Handle()} and \hyperlink{classCEngineFactory_ae41edcd258c966b0426f09aa7e3cd914}{destroy\-Call\-Handle()}

\hyperlink{classCEngineFactory_a6a53a8d86c921932e9e2d4431ca894ef}{create\-Call\-Handle()} in glue code will select the \char`\"{}default\char`\"{} type for p\-Protocol\-Engine and p\-Embedding\-Engine since these are the stable and valid defaults

\begin{DoxyNote}{\-Note}
unit tests may select different specific combinations for p\-Protocol\-Engine and p\-Embedding\-Engine but since some protocol/embedding combinations are invalid and not supported the caller has to be aware of this
\end{DoxyNote}
currently there may only be {\bfseries one} active \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} at a time.

this \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} is ref-\/counted by the \hyperlink{classCEngineFactory}{\-C\-Engine\-Factory} to be sure that multiple \hyperlink{classCEngineFactory_a6a53a8d86c921932e9e2d4431ca894ef}{create\-Call\-Handle()} calls get the same instance of the \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} and that only the \char`\"{}last\char`\"{} call to \hyperlink{classCEngineFactory_ae41edcd258c966b0426f09aa7e3cd914}{destroy\-Call\-Handle()} really deletes the \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} 

\subsection{\-Constructor \& \-Destructor \-Documentation}
\hypertarget{classCEngineFactory_ae2a523fa1e8af99bae9d3f936e9e0883}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!\-C\-Engine\-Factory@{\-C\-Engine\-Factory}}
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{\-C\-Engine\-Factory}]{\setlength{\rightskip}{0pt plus 5cm}\-C\-Engine\-Factory\-::\-C\-Engine\-Factory (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classCEngineFactory_ae2a523fa1e8af99bae9d3f936e9e0883}
\hypertarget{classCEngineFactory_a50890c0ffb574c8de1cf93ef45ca92ab}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!\-C\-Engine\-Factory@{\-C\-Engine\-Factory}}
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{\-C\-Engine\-Factory}]{\setlength{\rightskip}{0pt plus 5cm}\-C\-Engine\-Factory\-::\-C\-Engine\-Factory (
\begin{DoxyParamCaption}
\item[{const {\bf \-C\-Engine\-Factory} \&}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classCEngineFactory_a50890c0ffb574c8de1cf93ef45ca92ab}


\subsection{\-Member \-Function \-Documentation}
\hypertarget{classCEngineFactory_a6a53a8d86c921932e9e2d4431ca894ef}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!create\-Call\-Handle@{create\-Call\-Handle}}
\index{create\-Call\-Handle@{create\-Call\-Handle}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{create\-Call\-Handle}]{\setlength{\rightskip}{0pt plus 5cm}{\bf \-C\-Steg\-Call\-Handle} $\ast$ \-C\-Engine\-Factory\-::create\-Call\-Handle (
\begin{DoxyParamCaption}
\item[{const std\-::string \&}]{p\-Remote\-I\-D, }
\item[{{\bf \-C\-Properties\-Reader} $\ast$}]{p\-Extern\-Properties\-Reader = {\ttfamily \-N\-U\-L\-L}, }
\item[{{\bf \-N\-Audio\-Formats\-::\-S\-Stream\-Info}}]{p\-Io\-Stream\-Info = {\ttfamily {\bf \-N\-Audio\-Formats\-::\-S\-Stream\-Info}(\-N\-Audio\-Formats\-:\-:\-U\-N\-K\-N\-O\-W\-N\-\_\-\-W\-I\-D\-T\-H,							0,							\-N\-Audio\-Formats\-:\-:\-U\-N\-K\-N\-O\-W\-N\-\_\-\-C\-O\-D\-E\-C)}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}static\mbox{]}}}}
\label{classCEngineFactory_a6a53a8d86c921932e9e2d4431ca894ef}


create/reference a new call handle 

\begin{DoxyNote}{\-Note}
this \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} is ref-\/counted by the \hyperlink{classCEngineFactory}{\-C\-Engine\-Factory} 
\end{DoxyNote}

\begin{DoxyParams}{\-Parameters}
{\em p\-Remote\-I\-D} & caller \-I\-D of the {\bfseries remote} peer \\
\hline
{\em p\-Protocol\-Engine} & type of \-I\-Protocol\-Engine to be created \\
\hline
{\em p\-Embedding\-Engine} & type of \hyperlink{classIEmbeddingEngine}{\-I\-Embedding\-Engine} to be created\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{\-Returns}
an initialized \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} 
\end{DoxyReturn}
\hypertarget{classCEngineFactory_aba7490eeeb5595bdfc0a3ce77c773577}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!create\-Call\-Handle\-\_\-@{create\-Call\-Handle\-\_\-}}
\index{create\-Call\-Handle\-\_\-@{create\-Call\-Handle\-\_\-}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{create\-Call\-Handle\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}{\bf \-C\-Steg\-Call\-Handle} $\ast$ \-C\-Engine\-Factory\-::create\-Call\-Handle\-\_\- (
\begin{DoxyParamCaption}
\item[{const std\-::string \&}]{p\-Remote\-I\-D, }
\item[{{\bf \-C\-Properties\-Reader} $\ast$}]{p\-Extern\-Properties\-Reader, }
\item[{{\bf \-N\-Audio\-Formats\-::\-S\-Stream\-Info}}]{p\-Io\-Stream\-Info}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}static, private\mbox{]}}}}
\label{classCEngineFactory_aba7490eeeb5595bdfc0a3ce77c773577}


create a new instance of the \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} 

\hypertarget{classCEngineFactory_ae41edcd258c966b0426f09aa7e3cd914}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!destroy\-Call\-Handle@{destroy\-Call\-Handle}}
\index{destroy\-Call\-Handle@{destroy\-Call\-Handle}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{destroy\-Call\-Handle}]{\setlength{\rightskip}{0pt plus 5cm}void \-C\-Engine\-Factory\-::destroy\-Call\-Handle (
\begin{DoxyParamCaption}
\item[{{\bf \-C\-Steg\-Call\-Handle} $\ast$$\ast$}]{p\-Call\-Handle}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}static\mbox{]}}}}
\label{classCEngineFactory_ae41edcd258c966b0426f09aa7e3cd914}


destroy/un-\/reference this call handle 

\begin{DoxyNote}{\-Note}
this \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} is ref-\/counted by the \hyperlink{classCEngineFactory}{\-C\-Engine\-Factory} 
\end{DoxyNote}
\hypertarget{classCEngineFactory_aa061e96c927ed0742afea5f52747ead2}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!destroy\-Call\-Handle\-\_\-@{destroy\-Call\-Handle\-\_\-}}
\index{destroy\-Call\-Handle\-\_\-@{destroy\-Call\-Handle\-\_\-}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{destroy\-Call\-Handle\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}void \-C\-Engine\-Factory\-::destroy\-Call\-Handle\-\_\- (
\begin{DoxyParamCaption}
\item[{{\bf \-C\-Steg\-Call\-Handle} $\ast$$\ast$}]{p\-Call\-Handle}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}static, private\mbox{]}}}}
\label{classCEngineFactory_aa061e96c927ed0742afea5f52747ead2}


destroy this instance of the \hyperlink{classCStegCallHandle}{\-C\-Steg\-Call\-Handle} 

\hypertarget{classCEngineFactory_aa0b2b51d15c2f1bda53b5e4bab2704da}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!operator=@{operator=}}
\index{operator=@{operator=}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}{\bf \-C\-Engine\-Factory}\& \-C\-Engine\-Factory\-::operator= (
\begin{DoxyParamCaption}
\item[{const {\bf \-C\-Engine\-Factory} \&}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classCEngineFactory_aa0b2b51d15c2f1bda53b5e4bab2704da}


\subsection{\-Member \-Data \-Documentation}
\hypertarget{classCEngineFactory_aee9727ca1f55ca90733787da7e3f98d6}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!s\-Default\-Config\-Filename@{s\-Default\-Config\-Filename}}
\index{s\-Default\-Config\-Filename@{s\-Default\-Config\-Filename}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{s\-Default\-Config\-Filename}]{\setlength{\rightskip}{0pt plus 5cm}const std\-::string {\bf \-C\-Engine\-Factory\-::s\-Default\-Config\-Filename} = \char`\"{}/etc/stegit-\/2/stegit-\/2.conf\char`\"{}\hspace{0.3cm}{\ttfamily  \mbox{[}static, private\mbox{]}}}}
\label{classCEngineFactory_aee9727ca1f55ca90733787da7e3f98d6}
\hypertarget{classCEngineFactory_a949f76900016fc93b0ace727506d3bb4}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!s\-Ini\-Section\-Name@{s\-Ini\-Section\-Name}}
\index{s\-Ini\-Section\-Name@{s\-Ini\-Section\-Name}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{s\-Ini\-Section\-Name}]{\setlength{\rightskip}{0pt plus 5cm}const std\-::string {\bf \-C\-Engine\-Factory\-::s\-Ini\-Section\-Name} = \char`\"{}\-E\-N\-G\-I\-N\-E\-\_\-\-F\-A\-C\-T\-O\-R\-Y\char`\"{}\hspace{0.3cm}{\ttfamily  \mbox{[}static\mbox{]}}}}
\label{classCEngineFactory_a949f76900016fc93b0ace727506d3bb4}
\hypertarget{classCEngineFactory_ac12266ba155ccba2f71bf0dadb5ece71}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!s\-Recv\-Modified\-Filename@{s\-Recv\-Modified\-Filename}}
\index{s\-Recv\-Modified\-Filename@{s\-Recv\-Modified\-Filename}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{s\-Recv\-Modified\-Filename}]{\setlength{\rightskip}{0pt plus 5cm}const std\-::string {\bf \-C\-Engine\-Factory\-::s\-Recv\-Modified\-Filename} = \char`\"{}/tmp/recv\-\_\-mod.\-dat\char`\"{}\hspace{0.3cm}{\ttfamily  \mbox{[}static, private\mbox{]}}}}
\label{classCEngineFactory_ac12266ba155ccba2f71bf0dadb5ece71}
\hypertarget{classCEngineFactory_a172ca0e73b2bf3431c091e18d2001b59}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!s\-Send\-Modified\-Filename@{s\-Send\-Modified\-Filename}}
\index{s\-Send\-Modified\-Filename@{s\-Send\-Modified\-Filename}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{s\-Send\-Modified\-Filename}]{\setlength{\rightskip}{0pt plus 5cm}const std\-::string {\bf \-C\-Engine\-Factory\-::s\-Send\-Modified\-Filename} = \char`\"{}/tmp/send\-\_\-mod.\-dat\char`\"{}\hspace{0.3cm}{\ttfamily  \mbox{[}static, private\mbox{]}}}}
\label{classCEngineFactory_a172ca0e73b2bf3431c091e18d2001b59}
\hypertarget{classCEngineFactory_af2881f85b3805ef145778c2a0eec18f3}{
\index{\-C\-Engine\-Factory@{\-C\-Engine\-Factory}!s\-Send\-Original\-Filename@{s\-Send\-Original\-Filename}}
\index{s\-Send\-Original\-Filename@{s\-Send\-Original\-Filename}!CEngineFactory@{\-C\-Engine\-Factory}}
\subsubsection[{s\-Send\-Original\-Filename}]{\setlength{\rightskip}{0pt plus 5cm}const std\-::string {\bf \-C\-Engine\-Factory\-::s\-Send\-Original\-Filename} = \char`\"{}/tmp/send\-\_\-org.\-dat\char`\"{}\hspace{0.3cm}{\ttfamily  \mbox{[}static, private\mbox{]}}}}
\label{classCEngineFactory_af2881f85b3805ef145778c2a0eec18f3}


\-The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
\hyperlink{engine__factory_8h}{engine\-\_\-factory.\-h}\item 
\hyperlink{engine__factory_8cxx}{engine\-\_\-factory.\-cxx}\end{DoxyCompactItemize}
